In three-dimensional (3D) computer graphics, it is a common practice to generate an object to be drawn using a polygon model that is expressed by a number of polygons. In polygon model rendering processing, shading processing of shading polygon surfaces and texture mapping processing of pasting a texture image to a surface of the polygon model are performed.
In the early years of 3D computer graphics, to attain high-speed processing, the above kinds of processing were implemented by fixed pipelines using dedicated hardware circuits. However, with development of new technologies, to improve expressiveness, conversion from 3D coordinates to 2D coordinates and shading processing have been made programmable and overall devices have come to exhibit features of a “processor.” Such devices have come to be called an image processor (e.g., GPU (graphic processing unit)) as opposed to CPU.
In GPUs, customarily, a function unit that performs coordinate conversion to texture mapping is called, as a whole, a “shader”. Its constituent pieces of processing have become programmable and users are now capable of selectively performing various kinds of shading processing freely and variably. More specifically, vertex-by-vertex drawing of polygons has become programmable first and then vertex-by-vertex drawing of polygons after rasterization has become programmable. Most recently, GPUs having a configuration called “compute shader” have appeared in which programmable functional portions in the GPU can also be used for not only image processing but also general-purpose calculations.